﻿#pragma once
#ifndef WRWORKOBJECTACTIVATOR_H
#define WRWORKOBJECTACTIVATOR_H

#include "../WRGlobal.h"
#include "../../WRSoft-Utility/Runtime/WRClassActivator.h"
#include <QDomElement>

//工作对象激活器类型标识 {B4143D45-2CA5-4D66-947F-F71BEB56AAE0}
#define WRWorkObjectActivatorType QUuid(0xb4143d45, 0x2ca5, 0x4d66, 0x94, 0x7f, 0xf7, 0x1b, 0xeb, 0x56, 0xaa, 0xe0)

namespace WRTypes
{
    //获取工作对象激活器类型。
    WRSOFT_WORKING_COMMON_API WRType* workObjectActivator(void);
}

//声明工作对象类。
class WRWorkObject;
//声明工作程序类。
class WRWorkDaemon;

//表示工作对象创建器。
class WRSOFT_WORKING_COMMON_CLASS WRWorkObjectActivator : public WRClassActivator
{
private:
    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkObjectActivator)

protected:
    //初始化工作对象创建器。
    inline WRWorkObjectActivator(void)
    {
        //add code here
    }
    //释放当前对象所占用的相关资源。
    ~WRWorkObjectActivator(void)
    {
        //add code here
    }

public:
    //获取当前对象类型。
    WRType* type(void) const;
    //创建工作对象实例。
    virtual WRWorkObject* create(WRWorkDaemon* daemon, const QDomElement& config) = 0;
};

#endif // WRWORKOBJECTACTIVATOR_H
